import {createI18n} from "vue-i18n";
import ZhCN from "~/locales/lang/zh-CN.ts";

/**
 * @FileName: index.ts
 * @Description: // 多语言配置出口
 * @Author: Ellwood(liugangsin@qq.com)
 * @CreateDate: 2025/2/7 - 10:19
 * @Version: V1.0.0
 */

export const defaultLocale = "zh-CN";

const i18n = createI18n({
  legacy: false,
  // 本地化语言获取失败的时候是否输出警告
  missingWarn: false,
  // 默认多语言
  locale: defaultLocale,
  fallbackLocale: defaultLocale,
  messages: {
    "zh-CN": ZhCN,
  },
});

/**
 * 动态加载多语言
 * @param lang 语言参数
 */
export const loadLanguageAsync = async (lang: string = defaultLocale) => {
  const current = i18n.global.locale.value;
  if (current !== lang) {
    const message = await import(`./lang/${lang}.ts`);
    i18n.global.setLocaleMessage(lang, message.default);
  }
  return nextTick();
};

export default i18n;
